package eteam.aps.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import eteam.aps.model.entity.DataDictionaryCategory;
import eteam.aps.model.vo.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 字典分类持久层
 *
 * @author yiyikai
 */
@Mapper
public interface DataDictionaryCategoryMapper extends BaseMapper<DataDictionaryCategory> {

    /**
     * 添加字典分类
     *
     * @param category 字典分类实体类
     * @return 受影响的行数
     */
    int insertOne(DataDictionaryCategory category);

    /**
     * 修改字典分类状态 ---用于逻辑删除
     *
     * @param category 字典分类实体类
     * @return 受影响的行数
     */
    int updateStateByFId(DataDictionaryCategory category);

    /**
     * 修改字典分类基础信息
     *
     * @param category 字典分类实体类
     * @return 受影响的行数
     */
    int updateBasicsByFId(DataDictionaryCategory category);

    /**
     * 查询 单个 ---用于展示全部信息
     *
     * @param fId 字典分类内码
     * @return 字典分类实体类
     */
    DataDictionaryCategoryDetailsVo selectByFId(String fId);

    /**
     * 查询 单个 ---用于修改
     *
     * @param fId 字典分类内码
     * @return 字典分类修改信息
     */
    DataDictionaryCategoryUpdateVo selectUpdate(String fId);

    /**
     * 查询 全部 模糊
     *
     * @param map 筛选条件
     * @return 字典分类基础信息
     */
    List<DataDictionaryCategoryBasicsVo> selectAll(Map<String, Object> map);

    /**
     * 查询 全部 模糊
     *
     * @param map 筛选条件
     * @return 字典分类选择信息
     */
    List<DataDictionaryCategoryInquireVo> selectAllInquire(Map<String, Object> map);

    /**
     * 查询字典分类内码记录数
     *
     * @param fId 字典分类内码
     * @return 记录数
     */
    int selectCountByFId(String fId);

    /**
     * 查询字典分类编号记录数
     *
     * @param fDdcCode 字典分类编码
     * @return 记录数
     */
    int selectCountByFDdcCode(String fDdcCode);

    /**
     * 查询字典分类名称记录数
     *
     * @param fDdcName 字典分类名称
     * @return 记录数
     */
    int selectCountByFDdcName(String fDdcName);

    /**
     * 查询selectAll方法记录数
     *
     * @param map 筛选条件
     * @return 记录数
     */
    int selectCountAll(Map<String, Object> map);

    /**
     * 查询字典分类状态码
     *
     * @param fId 字典分类内码
     * @return 状态值
     */
    int selectByFState(String fId);

    /**
     * 查询字典分类目录树需要的数据
     * @return 字典分类fId、字典分类编号、字典分类名称
     */
    List<DataDictionaryCategoryTreeVo> selectFDdcTree(int fState);

    /**
     * 根据字典分类编号查询fId
     * @param code 字典分类编号
     * @return 字典分类fId
     */
    String selectByDdcCode(String code);

    /**
     * 物理删除字典分类
     * @param category 字典分类
     * @return 受影响的行数
     */
    int delete(String fId);
}